static int my_track_count = 0;
static char *getposn = NULL;
static char *poweroff = NULL;
+static char *eraset = NULL;
static char *resettime = NULL;
static char *snlen = NULL;
static char *snwhiteopt = NULL;
NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
{ "power_off", &poweroff, "Command unit to power itself down",
NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
+ { "erase_t", &eraset, "Erase existing courses when writing new ones",
+ NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
{ "resettime", &resettime, "Sync GPS time to computer time",
NULL, ARGTYPE_BOOL, ARG_NOMINMAX},
{ "category", &category, "Category number to use for written waypoints",
int i, n;
n = track_prepare();
-
- GPS_Command_Send_Track(portname, tx_tracklist, n);
-
+ GPS_Command_Send_Track(portname, tx_tracklist, n, (eraset)? 1 : 0);
+
for (i = 0; i < n; i++) {
GPS_Track_Del(&tx_tracklist[i]);
}
n_trk = track_prepare();
GPS_Command_Send_Track_As_Course(portname, tx_tracklist, n_trk,
- tx_waylist, n_wpt);
+ tx_waylist, n_wpt, (eraset)? 1 : 0);
for (i = 0; i < n_wpt; ++i) {
GPS_Way_Del(&tx_waylist[i]);
** @return [int32] success
************************************************************************/
-int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n)
+int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n, int eraset)
{
int32 ret=0;
/* Units with A302 don't support track upload, so we convert the
* track to a course on the fly and send that instead
*/
- ret = GPS_Command_Send_Track_As_Course(port, trk, n, NULL, 0);
+ ret = GPS_Command_Send_Track_As_Course(port, trk, n, NULL, 0, eraset);
break;
default:
GPS_Error("Send_Track: Unknown track protocol %d.", gps_trk_transfer);
************************************************************************/
int32 GPS_Command_Send_Track_As_Course(const char *port, GPS_PTrack *trk, int32 n_trk,
- GPS_PWay *wpt, int32 n_wpt)
+ GPS_PWay *wpt, int32 n_wpt, int eraset)
{
GPS_PCourse *crs = NULL;
GPS_PCourse_Lap *clp = NULL;
int32 ret;
/* Read existing courses from device */
- n_crs = GPS_Command_Get_Course(port, &crs, &clp, &ctk, &cpt, &n_clp, &n_ctk, &n_cpt, NULL);
- if (n_crs < 0) return n_crs;
+ if (eraset)
+ n_crs = 0;
+ else {
+ n_crs = GPS_Command_Get_Course(port, &crs, &clp, &ctk, &cpt, &n_clp, &n_ctk, &n_cpt, NULL);
+ if (n_crs < 0) return n_crs;
+ }
+
/* Create new course+lap+track points for each track */
new_crs = n_crs;
int32 GPS_Command_Send_Almanac(const char *port, GPS_PAlmanac *alm, int32 n);
int32 GPS_Command_Get_Track(const char *port, GPS_PTrack **trk, int (*cb)(int, struct GPS_SWay **));
-int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n);
+int32 GPS_Command_Send_Track(const char *port, GPS_PTrack *trk, int32 n, int eraset);
int32 GPS_Command_Get_Waypoint(const char *port, GPS_PWay **way,int (*cb)(int, struct GPS_SWay **));
int32 GPS_Command_Send_Waypoint(const char *port, GPS_PWay *way, int32 n, int (*cb)(struct GPS_SWay **));
GPS_PTrack *trk, GPS_PCourse_Point *cpt,
int32 n_crs, int32 n_clp, int32 n_trk, int32 n_cpt);
int32 GPS_Command_Send_Track_As_Course(const char *port, GPS_PTrack *trk, int32 n_trk,
- GPS_PWay *wpt, int32 n_wpt);
+ GPS_PWay *wpt, int32 n_wpt, int eraset);
int32 GPS_Command_Get_Workout(const char *port, void **lap, int (*cb)(int, struct GPS_SWay **));
int32 GPS_Command_Get_Fitness_User_Profile(const char *port, void **lap, int (*cb)(int, struct GPS_SWay **));